package com.panda.takeaway.service;


import com.panda.takeaway.entity.bo.CreateOrderBo;
import com.panda.takeaway.entity.bo.OrderBo;
import com.panda.takeaway.entity.dto.CommonResult;
import com.panda.takeaway.entity.dto.PageBean;
import com.panda.takeaway.entity.vo.PageInfoVo;

public interface OrderService {
    /**
     * 根据手机号码或者订单编号查找订单
     *
     * @param orderBo  包含订单编号或者手机号
     * @param merchant 商家账号
     * @param page     在第几页展示订单
     * @return
     */
    CommonResult<PageBean<OrderBo>> merchantQueryOrder(OrderBo orderBo, String merchant, int page);

    /**
     * 商家获取不同订单状态的订单
     *
     * @param userId     商家id
     * @param status     订单状态
     * @param pageInfoVo 分页信息（第几页，每页多少条数据）
     * @return
     */
    CommonResult<PageBean<OrderBo>> merchantGetOrderByStatus(Long userId, byte status, PageInfoVo pageInfoVo);

    /**
     * 顾客根据订单编号查找订单
     *
     * @param userId  顾客id
     * @param orderBo 包含订单编号
     * @return
     */
    CommonResult<OrderBo> customerQueryOrder(Long userId, OrderBo orderBo);

    /**
     * 商家设置订单状态
     * @param number 顾客订单编号
     * @param userId 商家账号id
     * @param status 订单要被设置成的状态
     * @return
     */
    CommonResult<String> arrangeOrder(String number, byte status, Long userId);

    /**
     * 顾客提交订单
     * @param createOrderBo 订单信息
     * @return 返回订单编号
     */
    CommonResult<String> createOrder(CreateOrderBo createOrderBo);

    /**
     * 顾客查询不同状态的订单
     * @param userId 顾客id
     * @param status 订单状态
     * @param pageInfoVo 分页信息
     * @return
     */
    CommonResult<PageBean<OrderBo>> customerGetOrderByStatus(Long userId, byte status, PageInfoVo pageInfoVo);
}
